/**
*	@class FBXLoader
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __FBXLOADER_H_INCLUDED__
#define __FBXLOADER_H_INCLUDED__

//  Library Includes

//  Local Includes
#include "FBXLib.h"
#include "fbxsdk.h"

//  Macros

//  Forward Declarations
namespace Protein
{
  template< typename T >
  class Vector3;

  template< typename T >
  class Vector2;
}

//  Types
typedef struct tagFBXData
{
	i32                numVerts;
	i32                numIndices;
	i32                numTexVerts;
	i32	               numNormals;

	Protein::Vector3f* pVerts;
	Protein::Vector3f* pNormals;
	Protein::Vector2f* pTexVerts;
	u32*	             pInds;

} tFBXData;

//  Constants

//  Prototypes

namespace Protein
{

class FBXLoader
{
	//Member Functions
public:

	FBXLoader();
	~FBXLoader();

	bool LoadFBX( const char* szFilename, tFBXData& data );

protected: 

private: 

	void loadGeometryData( FbxMesh* mesh, tFBXData& data );
	bool loadTextureData( FbxMesh* mesh, tFBXData& data );
	bool loadNormalData( FbxMesh* mesh, tFBXData& data );

	//Member Variables
public:

protected: 

private: 

	static fbxsdk_2013_2::FbxManager*	s_fbxSdkManager;		

};

}

#endif //__FBXLOADER_H_INCLUDED__
